import router from './index'
import { useUserStore } from '@/stores/user'
import { showToast } from 'vant'
import { checkToken, clearToken } from '@/utils/auth'

// 不需要登录就可以访问的白名单路径
const whiteList = [
  '/auth/login',
  '/auth/phone-login',
  '/auth/sms-login',
  '/auth/register',
  '/auth/phone-register',
  '/auth/email-register',
  '/auth/forgot-password',
  '/',
  '/home',
  '/discover',
  '/activity/detail'  // 允许未登录用户查看活动详情
]

router.beforeEach(async (to, from, next) => {
  const userStore = useUserStore()
  const hasToken = localStorage.getItem('token')

  // 设置页面标题
  document.title = (to.meta.title as string) || 'Vue App'

  // 如果是登录页面，直接放行
  if (to.path.startsWith('/auth/')) {
    next()
    return
  }

  if (hasToken) {

    // 已登录，检查是否有用户信息
    if (!userStore.userInfo) {
      try {
        // 获取用户信息
        await userStore.getUserInfo()
        next()
      } catch (error: any) {
        // 获取用户信息失败，可能是token过期
        userStore.resetToken()
        showToast('登录已过期，请重新登录')
        next(`/auth/login?redirect=${to.path}`)
      }
    } else {
      next()
    }
  } else {
    // 未登录
    if (whiteList.some(path => to.path.startsWith(path))) {
      // 白名单中的页面允许访问
      next()
    } else {
      // 保存要跳转的路由，登录后跳转回来
      next(`/auth/login?redirect=${encodeURIComponent(to.fullPath)}`)
    }
  }
})

router.afterEach(() => {
  // 路由切换后的操作，如关闭loading等
})
